package com.hanlin.backend.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hanlin.backend.common.dto.SettingDto;
import com.hanlin.backend.common.entity.HlSetting;

import java.util.List;

/**
 * <p>
 * 全局参数表 服务类
 * </p>
 *
 * @author hl.yuan
 * @since 2021-01-06
 */
public interface HlSettingService extends IService<HlSetting> {

    /**
     * 根据模块名称和参数名称获取全局参数
     *
     * @param model 模块名称 不能为null
     * @param name  参数名称  不能为null
     * @return
     */
    HlSetting getSetting(String model, String name);


    /**
     * 根据模块名称和参数名称获取全局参数，当为null时，给默认值
     *
     * @param model    模块名称
     * @param name     参数名称
     * @param defaults 默认值
     * @return
     */
    String getSetting(String model, String name, String defaults);

    /**
     * 获取全局参数列表
     *
     * @return
     */
    List<HlSetting> getTable();

    /**
     * 保存setting
     *
     * @param setting
     */
    void saveSetting(HlSetting setting);

    /**
     * 删除全局参数
     *
     * @param id
     */
    void deleteSetting(int id);

    /**
     * 保存邮件签名
     *
     * @param model
     * @param name
     * @param value
     */
    void saveMail(String model, String name, String value);

    /**
     * 查询全局参数数据
     *
     * @param dto
     * @return
     */
    IPage<HlSetting> getTable(SettingDto dto);
}
